package o2o.service.order;

import o2o.cache.order.*;

import o2o.dao.PO.order.*;




public class OrderService {
    // 使用dcl 模式
    private OrderService() {
    }

    private static OrderService instance = null;

    public static OrderService getInstance() {
        if (instance == null) {
            synchronized (OrderService.class) {
                if (instance == null) {
                    instance = new OrderService();
                }
            }
        }
        return instance;
    }

    // public List<OrderInfoVO> convertToVO(List<OrderInfo> list) {
    //     if (ValidateUtil.isAbsList(list)) {
    //         List<OrderInfoVO> infoVOList = new ArrayList<>();
    //         for (int i = 0; i < list.size(); i++) {
    //             if (null == list.get(i)) {
    //                 continue;
    //             }
    //             //拷贝订单
    //             OrderInfoVO infoVO = convertOneToVO(list.get(i));
    //             if (null == infoVO) {
    //                 continue;
    //             }
    //             infoVOList.add(infoVO);
    //         }
    //         return infoVOList;
    //     }
    //     return Collections.emptyList();
    // }
    //
    // public OrderInfoVO convertOneToVO(OrderInfo info) {
    //     if (null == info) {
    //         return null;
    //     }
    //     //拷贝订单
    //     OrderInfoVO infoVO = new OrderInfoVO();
    //     BeanUtils.copyProperties(info, infoVO);
    //     if (ValidateUtil.isNotNull(infoVO.getShopImageUrl()) && ValidateUtil.isNotNetUrl(infoVO.getShopImageUrl())) {
    //         infoVO.setShopImageUrl(SYS_CONFIG_PATH.IMAGE_BASE_URL + infoVO.getShopImageUrl());
    //     }
    //     if (null != infoVO.getOrderType() && (0 == ORDER_TYPE.SHOP_SERVICE - infoVO.getOrderType() || 0 == ORDER_TYPE.SHOP_RESCUE - infoVO.getOrderType())) {
    //         List<OrderGoodsLabelVO> labels = OrderListMan.listOfOrderNO(infoVO.getOrderNo());
    //         infoVO.setLabelList(labels);
    //         List<OrderInfoImageVO> orderInfoImageVOList = OrderService.getInstance().listOfOrderInfoImageByOrderNo(info.getOrderNo());
    //         if (ValidateUtil.isAbsList(orderInfoImageVOList)) {//获取相关图片
    //             //设置图片信息
    //             infoVO.setImageList(orderInfoImageVOList);
    //         }
    //     }
    //     return infoVO;
    // }

    // findbyOrderNo
    public OrderInfo findByOrderNo(String orderNo) {
        //订单信息
        OrderInfo info = OrderInfoMemory.getInstance().getOrderInfo(orderNo);
        return info;
    }

    // // todo : 订单详情
    // public OrderInfoVO getOrderDetail(String orderNo) {
    //     //订单信息
    //     OrderInfo info = OrderInfoMemory.getInstance().getOrderInfo(orderNo);
    //     if (null == info) {
    //         return null;
    //     }
    //     // todo :订单额外信息
    //     OrderInfoExtra orderInfoExtra = OrderInfoExtraMemory.getInstance().getOrderInfoExtraByOrderNo(orderNo);
    //     if (null != orderInfoExtra) {
    //         info.setOrderInfoExtra(orderInfoExtra);
    //     }
    //     OrderInfoVO infoVO = new OrderInfoVO();
    //     BeanUtils.copyProperties(info, infoVO);
    //     // todo 头像处理
    //     if (ValidateUtil.isNotNull(infoVO.getShopImageUrl()) && ValidateUtil.isNotNetUrl(infoVO.getShopImageUrl())) {
    //         infoVO.setShopImageUrl(SYS_CONFIG_PATH.IMAGE_BASE_URL + infoVO.getShopImageUrl());
    //     }
    //     if (ValidateUtil.isNotNull(infoVO.getPostmanImageUrl()) && ValidateUtil.isNotNetUrl(infoVO.getPostmanImageUrl())) {
    //         infoVO.setPostmanImageUrl(SYS_CONFIG_PATH.IMAGE_BASE_URL + infoVO.getPostmanImageUrl());
    //     }
    //     //todo: 获取订单商品详情_
    //     infoVO.setGoods(listOrderGoodsByOrderNo(info, info.getOrderNo()));
    //     //todo: 店铺属性信息
    //     infoVO.setSpecs(listOfOrderShopSpecsByOrderNo(info, info.getOrderNo()));
    //     //todo: 获取订单的活动信息
    //     infoVO.setGameAward(listOrderGameRulesByOrderNo(info.getOrderNo()));
    //     // 服务单相关信息
    //     if (null != info.getOrderType() && 0 == ORDER_TYPE.SERVICE_LOCK - info.getOrderType()) {
    //         // todo: 订单标签信息
    //         infoVO.setLabelList(listOfOrderGoodsLabelByOrderNo(orderNo));
    //         //todo: 订单服务内容
    //         List<OrderItems> itemList = OrderItemsMemory.getInstance().listOfOrderNo(orderNo);
    //         if (ValidateUtil.isAbsList(itemList)) {
    //             infoVO.setItemList(itemList);
    //         }
    //         // todo: 获取订单图片信息
    //         infoVO.setImageList(listOfOrderInfoImageByOrderNo(orderNo));
    //     }
    //     // 好管家 订单图片
    //     if (null != info.getOrderType() && (0 == ORDER_TYPE.SHOP_SERVICE - info.getOrderType() || 0 == ORDER_TYPE.SHOP_RESCUE - info.getOrderType())) {
    //         // todo: 获取订单图片信息
    //         infoVO.setImageList(listOfOrderInfoImageByOrderNo(orderNo));
    //     }
    //     // todo: 环信账号信息
    //     infoVO.setHxAccountInfoVO(getHxAccountInfoByOrderNo(info, orderNo));
    //     return infoVO;
    // }
    //
    // // todo: 获取订单商品详情
    // public static List<OrderGoodsVO> listOrderGoodsByOrderNo(OrderInfo orderInfo, String orderNo) {
    //     if (orderInfo != null) {
    //     } else {
    //         orderInfo = OrderInfoMemory.getInstance().getOrderInfo(orderNo);
    //     }
    //     if (orderInfo == null) {
    //         return Collections.emptyList();
    //     }
    //     List<OrderGoods> orderGoodsList = orderInfo.getGoods();
    //     if (!ValidateUtil.isAbsList(orderInfo.getGoods())) {
    //         orderGoodsList = OrderGoodsMemory.getInstance().listOfOrderNo(orderNo);
    //     }
    //     // 排序
    //     if (!ValidateUtil.isAbsList(orderGoodsList)) {
    //         return Collections.emptyList();
    //     }
    //     List<OrderGoodsVO> reList = orderGoodsList.stream().map(b -> {
    //         OrderGoodsVO vo = new OrderGoodsVO();
    //         BeanUtils.copyProperties(b, vo);
    //         return vo;
    //     }).collect(Collectors.toList());
    //     if (Optional.ofNullable(SYS_SETTINGS.HAS_GOODS_SET_MEAL).orElse(0) - 1 == 0) {
    //         Collections.sort(reList, Comparator.comparingLong(OrderGoodsVO::getId));
    //         Map<Long, List<OrderGoodsVO>> listMap = reList.stream().collect(Collectors.groupingBy(OrderGoodsVO::getPId));
    //         if (listMap.containsKey(-1L)) {
    //             reList = listMap.get(-1L);
    //             for (OrderGoodsVO vo : reList) {
    //                 List<OrderGoodsVO> orderGoodsVOS = listMap.get(vo.getId());
    //                 if (ValidateUtil.isAbsList(orderGoodsVOS)) {
    //                     vo.setOrderGoodsList(orderGoodsVOS);
    //                 }
    //             }
    //         }
    //     }
    //     return reList;
    // }
    //
    // // todo 获取订单商家specs
    // private List<OrderShopSpecsVO> listOfOrderShopSpecsByOrderNo(OrderInfo orderInfo, String orderNo) {
    //     if (orderInfo == null) {
    //         orderInfo = OrderInfoMemory.getInstance().getOrderInfo(orderNo);
    //     }
    //     if (orderInfo == null) {
    //         return Collections.emptyList();
    //     }
    //     List<OrderShopSpecs> specsList = orderInfo.getSpecs();
    //     if (!ValidateUtil.isAbsList(specsList)) {
    //         specsList = OrderShopSpecsMemory.getInstance().listOfOrderNo(orderNo);
    //     }
    //     return !ValidateUtil.isAbsList(specsList) ?
    //             Collections.emptyList() : specsList.stream().map(b -> getOrderShopSpecsDetail(b)).collect(Collectors.toList());
    // }
    //
    // // todo 获取订单商家specs 详情
    // private OrderShopSpecsVO getOrderShopSpecsDetail(OrderShopSpecs orderShopSpecs) {
    //     if (orderShopSpecs == null) {
    //         return null;
    //     }
    //     OrderShopSpecsVO shopSpecsVO = new OrderShopSpecsVO();
    //     BeanUtils.copyProperties(orderShopSpecs, shopSpecsVO);
    //     ShopSpecsType shopSpecsType = ShopSpecsTypeMemory.getInstance().getById(shopSpecsVO.getSpecsTypeId());
    //     if (null != shopSpecsType) {
    //         shopSpecsVO.setSpecsTypeName(shopSpecsType.getName());
    //     }
    //     return shopSpecsVO;
    // }
    //
    // // todo 获取订单活动信息
    // private List<OrderGameRulesVO> listOrderGameRulesByOrderNo(String orderNo) {
    //     if (ValidateUtil.isNull(orderNo)) {
    //         Collections.emptyList();
    //     }
    //     List<OrderGameRules> gameList = OrderGameMemory.getInstance().listOfOrderNo(orderNo);
    //     if (!ValidateUtil.isAbsList(gameList)) {
    //         return Collections.emptyList();
    //     }
    //     return gameList.stream().map(bean -> getOrderGameRuleDetail(bean)).collect(Collectors.toList());
    // }
    //
    // // todo: 获取单个订单活动详情
    // private OrderGameRulesVO getOrderGameRuleDetail(OrderGameRules orderGameRules) {
    //     OrderGameRulesVO vo = new OrderGameRulesVO();
    //     BeanUtils.copyProperties(orderGameRules, vo);
    //     if (orderGameRules.getGameType() - GAME_TYPE.RED_PACKET_MONEY == 0 || orderGameRules.getGameType() - GAME_TYPE.RED_PACKET_FIRST_MONEY == 0) {
    //         RedPacketRecord redPacketRecord = RedPacketRecordMemory.getInstance().getById(orderGameRules.getGameId());
    //         if (null != redPacketRecord) {
    //             vo.setPacketType(redPacketRecord.getPacketType());
    //         }
    //     }
    //     return vo;
    // }
    //
    // // todo: 获取订单商品标签
    // private List<OrderGoodsLabelVO> listOfOrderGoodsLabelByOrderNo(String orderNo) {
    //     if (ValidateUtil.isNull(orderNo)) {
    //         return Collections.emptyList();
    //     }
    //     List<OrderGoodsLabel> labelList = OrderGoodsLabelMemory.getInstance().listOfOrderNo(orderNo);
    //     return !ValidateUtil.isAbsList(labelList) ? Collections.emptyList() :
    //             labelList.stream().map(bean -> {
    //                 OrderGoodsLabelVO vo = new OrderGoodsLabelVO();
    //                 BeanUtils.copyProperties(bean, vo);
    //                 return vo;
    //             }).collect(Collectors.toList());
    // }
    //
    // //todo: 获取订单的图片信息
    // public List<OrderInfoImageVO> listOfOrderInfoImageByOrderNo(String orderNo, int type) {
    //     if (ValidateUtil.isNull(orderNo)) {
    //         return Collections.emptyList();
    //     }
    //     List<OrderInfoImage> list = OrderInfoImageMemory.getInstance().listOfOrderNo(orderNo);
    //     if (!ValidateUtil.isAbsList(list)) {
    //         return Collections.emptyList();
    //     }
    //     list.stream().filter(b -> {
    //         if (b.getType() != null && b.getType() - type != 0) {
    //             return false;
    //         }
    //         return true;
    //     }).map(bean -> {
    //         OrderInfoImageVO vo = new OrderInfoImageVO();
    //         BeanUtils.copyProperties(bean, vo);
    //         if (ValidateUtil.isNotNull(vo.getImageUrl()) && ValidateUtil.isNotNetUrl(vo.getImageUrl())) {
    //             vo.setImageUrl(SYS_CONFIG_PATH.IMAGE_BASE_URL + vo.getImageUrl());
    //         }
    //         return vo;
    //     }).collect(Collectors.toList());
    //     return Collections.emptyList();
    // }
    //
    // //todo: 获取订单的图片信息
    // public List<OrderInfoImageVO> listOfOrderInfoImageByOrderNo(String orderNo) {
    //     return listOfOrderInfoImageByOrderNo(orderNo, ORDER_IMAGE_TYPE.ORDER_IMAGE_TYPE_ORDINARY);
    // }
    //
    // // todo: 获取账号信息
    // private HxAccountInfoVO getHxAccountInfoByOrderNo(OrderInfo orderInfo, String orderNo) {
    //     if (orderInfo == null) {
    //         orderInfo = OrderInfoMemory.getInstance().getOrderInfo(orderNo);
    //     }
    //     if (orderInfo == null) {
    //         return null;
    //     }
    //     // 添加环信账号
    //     HxAccountInfoVO h = new HxAccountInfoVO();
    //     // 用户的
    //     if (ValidateUtil.isNotNull(orderInfo.getUsername())) {
    //         UserInfo user = UserInfoMemory.getInstance().getUserInfo(orderInfo.getUsername());
    //         if (user != null) {
    //             h.setUserId(user.getId()).setName(user.getName()).setUsername(user.getUsername()).setUserHxAccount(user.getHxAccount());
    //         }
    //     }
    //     // 店铺的
    //     if (ValidateUtil.isID(orderInfo.getShopId())) {
    //         ShopInfo shopInfo = ShopMemory.getInstance().getShopById(orderInfo.getShopId());
    //         if (null != shopInfo) {
    //             UserInfo shopUser = UserInfoMemory.getInstance().getUserInfo(shopInfo.getOwnUsername());
    //             h.setShopName(shopInfo.getShopName()).setShopId(shopInfo.getId());
    //             if (shopUser != null) {
    //                 h.setShopUsername(shopUser.getUsername()).setShopHxAccount(shopUser.getHxAccount());
    //             }
    //         }
    //     }
    //     // 骑手
    //     if (ValidateUtil.isNotNull(orderInfo.getPostManUsername())) {
    //         CityPostman cityPostman = CityPostmanMemory.getInstance().getPostman(orderInfo.getPostManUsername());
    //         if (cityPostman != null) {
    //             h.setPostmanId(cityPostman.getId()).setPostmanUsername(cityPostman.getUsername());
    //             UserInfo user = UserInfoMemory.getInstance().getUserInfo(cityPostman.getUsername());
    //             if (user != null) {
    //                 h.setPostmanName(user.getName()).setPostmanHxAccount(user.getHxAccount());
    //             }
    //         }
    //     }
    //     return h;
    // }
    //
    // // todo: 订单支付后设置确认订单是否为首营订单
    // public boolean checkShopIdIsFirstBuy(Long shopBId, Long shopId, String orderNo) {
    //     if (ValidateUtil.isNotID(shopBId) || ValidateUtil.isNotID(shopId)) {
    //         return false;
    //     }
    //     Set<Long> shopIdSet = new HashSet<>();
    //     shopIdSet.add(shopId);
    //     //
    //     Set<Integer> statusSet = new HashSet<>();
    //     statusSet.add(ORDER_STATUS.SUBMIT);
    //     statusSet.add(ORDER_STATUS.PAYED_CANCEL);
    //     statusSet.add(ORDER_STATUS.CANCEL);
    //     // 先查看商家信息
    //     List<OrderInfo> orderInfoList = ShopBOrderMemoryMan.getInstance().listOfShopBOrderBySelective(shopBId, shopIdSet, null, null, statusSet);
    //     boolean isFirstBuy = true;
    //     if (ValidateUtil.isAbsList(orderInfoList)) {
    //         for (OrderInfo tfo : orderInfoList) {
    //             if (ValidateUtil.isNotNull(orderNo)) {
    //                 if (!orderNo.equals(tfo.getOrderNo())) {
    //                     isFirstBuy = false;
    //                     break;
    //                 }
    //             } else {
    //                 isFirstBuy = false;
    //                 break;
    //             }
    //         }
    //     }
    //     return isFirstBuy;
    // }
    //
    // // todo: deal首营
    // public void dealShopOrderFirstBattalion(String orderNo) {
    //     OrderInfo info = OrderInfoMemory.getInstance().getOrderInfo(orderNo);
    //     if (info == null) {
    //         return;
    //     }
    //     // 已经处理过了 不需要再处理了
    //     if (info.getIsFirstBusiness() != null && info.getIsFirstBusiness() == 1) {
    //         return;
    //     }
    //     if (checkShopIdIsFirstBuy(info.getShopBId(), info.getShopId(), info.getOrderNo())) {
    //         // 修改订单状态为首营
    //         StringBuffer sql = new StringBuffer();
    //         sql.append(" update ").append(PojoTables.OrderInfo)
    //                 .append(" set isFirstBusiness = 1")
    //                 .append(" where orderNo = '").append(orderNo).append("'")
    //                 .append(" and delFlag = 0");
    //         try {
    //             UserDaoSql.getInstance().executeBySql(sql.toString());
    //         } catch (Exception e) {
    //             e.printStackTrace();
    //             return;
    //         }
    //         OrderInfoMemory.getInstance().modifyStatus(orderNo);
    //     }
    // }
}
